package general;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;


public class Fichiers {

	private File fichier = null;
	
	
	public Fichiers() {
		initialiserFichier("user.dir"+"\\"+"ficherDefaut", true);
	}
	
	public Fichiers(boolean reInitialiser) {
		initialiserFichier("user.dir"+"\\"+"ficherDefaut", reInitialiser);
	}
	
	
	public Fichiers(String pathFichier, String nomFichier ) {
		initialiserFichier(pathFichier+nomFichier, true);
	}
	
	public Fichiers(String pathFichier, String nomFichier, boolean reInitialiser) {
		initialiserFichier(pathFichier+nomFichier, reInitialiser);
	}
	
	public Fichiers(String nomFichier ) {
		initialiserFichier(System.getProperty("user.dir" )+"\\"+nomFichier, true);
	}
	
	public Fichiers(String nomFichier, boolean reInitialiser) {
		initialiserFichier(System.getProperty("user.dir" )+"\\"+nomFichier, reInitialiser);
	}


	
	private void initialiserFichier(String path, Boolean reInitialiser) {
		try {
			fichier = new File(path);
		} catch (Exception e) {
			System.out.println("Impossible de trouver le fichier :"+path);
		}
	}
	/** lecture du fichier 
	 * @param cheminFichier = path + nomFichier
	 * @return String[]
	 * @throws Exception
	 */
	public String[] lireFichier() throws Exception{
	    String[] txt = new String[10000];
		InputStreamReader flog	= null;
		LineNumberReader llog	= null;
		String myLine		     = null;
		try{ 
			flog = new InputStreamReader( new FileInputStream(fichier.getAbsolutePath()) );
			llog = new LineNumberReader(flog);
			int i = 0;
			while ((myLine = llog.readLine()) != null) { 
				txt[i] = myLine;
				i++;
	        }
        }catch (Exception e){
			throw e;
        }

	    return txt;
	}
	
	
	public boolean ecrirerFichierLn(String donnee) throws Exception{
		return ecrirerFichier(donnee+"\n");
	}
	
	/** ecriture du fichier 
	 * @param cheminFichier
	 * @param donnee
	 * @return
	 * @throws Exception
	 */
	public boolean ecrirerFichier(String donnee) throws Exception{
		//methode brute on efface le fichier puis on le recree
		FileWriter writer = null;
		try{
			try {
				//File MyFile = new File(fichier.getAbsolutePath());
				//MyFile.delete(); 
			} catch (Exception e) {
				throw e;
			}	
			
		     writer = new FileWriter(fichier.getAbsolutePath(), true);
		     writer.write(donnee,0,donnee.length());
		}catch(IOException e){
			throw e;
		}finally{
		  if(writer != null){
		     try {
				writer.close();
			} catch (IOException e) {
				throw e;				
			}
		  }
		}
		//System.out.println("ecriture du fichier : " + fichier.getAbsolutePath() );
		return true;
	}


	public File getFichier() {
		return fichier;
	}


	public void setFichier(File fichier) {
		this.fichier = fichier;
	}
	
	

}
